//Example placement and physics
//var physicsInfo = {
//	gravity : 9.81
//};
//var placement = {
//	pattern : ["xxxx"],
//	y : 5,
//	startTime : 1.0,
//  pace : 1.0;
//	vSpacing : 1,
//	launchers : 4,
//	x : 4
//};
function LauncherGroup(placement, physicsInfo){
	this.launchers = new Array(placement.launchers);
	this.projectiles = new Array();
	var timingInfos = new Array(placement.launchers);
	for(i=0;i<timingInfos.length;i++)
		timingInfos[i] = new Array();
	for(patternNo=0;patternNo < placement.pattern.length;patternNo++){
		patternLength = placement.pattern[patternNo].length;
		for(strPos=0;strPos<patternLength;strPos++){
			var ch = placement.pattern[patternNo][strPos];
			if(ch != " "){
				launcherId = strPos % placement.launchers;
				row = Math.floor(strPos / placement.launchers);
				currentY = placement.y - placement.vSpacing * row;
				currentT = placement.startTime + placement.pace * patternNo;
				timingInfos[launcherId].push({y: currentY, t: currentT});
			}
		}
	}
	for(i=0;i<placement.launchers;i++){
		this.launchers[i] = new Launcher(timingInfos[i], physicsInfo);
		this.projectiles = this.projectiles.concat(this.launchers[i].calculate(placement.x + i));
	}
}